package com.seata.order.controller;

import com.seata.order.service.OrderService;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/****************************************************
 *
 * @author lbf
 * @date 2025/7/15 16:13
 ****************************************************/
@RestController
public class OrderController {

    @Autowired
    private OrderService orderService;

    @GetMapping("/order/create")
    /**
     * Order 相当于TM，即主动开启分布式全局事务的角色；
     * Stock 相当于 RM
     *
     * 问题：开启全局分布式事务后，本地服务为什么不需要开启本地事务了？
     */
    @GlobalTransactional(timeoutMills = 120000)// 开启分布式事务
    public String create(){

        try {
            orderService.create();
        }catch (Exception e){
            /**
             * 将异常抛出去
             *
             */
            //throw new RuntimeException("生成订单成功失败");

            /**
             * Order 服务service中发生了异常，但在Order开启管局事务的controller 的异常没有抛出，在try...catch... 中处理了，
             * 此时 Stock 的事务回滚了，而 Order 的事务回滚了
             */
            System.out.println("Order--生成订单成功失败~~~~~~");
        }

        return "生成订单成功";
    }
}
